/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import javax.swing.JOptionPane;
import model.Cliente;
import model.GenericoDAO;
import org.hibernate.Session;
import util.Controller;
import util.HibernateUtil;
import view.JCadastraCliente;
import view.JPrincipal;
import view.JRecepcao;


/**
 *
 * @author Dick developer
 */
public class ControllerCadastraCliente implements Controller{
    
    private JPrincipal jf;
    private String cpf;
    private Cliente cliente;
    private int controle;
    private JRecepcao jr;
    

    public ControllerCadastraCliente(JPrincipal jf) {

        this.jf = jf;  
        controle = 1;
    }

    public ControllerCadastraCliente(JRecepcao jr) {
        this.jr = jr; 
        controle = 2;
    }
        
    public void iniciaApp(){
            // Cria a tela e passa o controle pra tela
            JCadastraCliente janela = new JCadastraCliente(this,jf,controle);
            janela.exibe();
    }
    
    public void iniciaApp_caixa(){
            // Cria a tela e passa o controle pra tela
            JCadastraCliente janela = new JCadastraCliente(this,jr,controle);
            janela.exibe();
    }
    
        
    public boolean verifica_se_usuario_tem_cadastro(String cpf){
        
        //JOptionPane.showMessageDialog(null, "OK");
        
        this.cpf = cpf;
        
        Session s = HibernateUtil.getSessionFactory().openSession();
        Cliente cliente = null;
        
        try{
            
            cliente =   (Cliente)s.createQuery("from model.Cliente c where c.documento =:cpf")
                        .setParameter("cpf", cpf)
                        .uniqueResult();
            
        }catch (Exception e) {
            
            JOptionPane.showMessageDialog(null, "Erro ao carregar Model Cliente: "+e.getMessage());
            
        }
        
        if (cliente == null){
            return false; 
        }else{
            return true;
        }
        
    }
    
    public boolean cadastra_cliete(Cliente cliente){
                
        this.cliente = cliente;
        
        GenericoDAO dao = new GenericoDAO();
        if(dao.Salvar(cliente)){
            
            return true;
        }else{
            
            return false;
        }
        
        
    }
    
    public Cliente retorna_dados_do_cliente(String cpf){
        
        //JOptionPane.showMessageDialog(null, "OK");
        
        this.cpf = cpf;
        
        Session s = HibernateUtil.getSessionFactory().openSession();
        Cliente cliente = null;
        
        try{
            
            cliente =   (Cliente)s.createQuery("from model.Cliente c where c.documento =:cpf")
                        .setParameter("cpf", cpf)
                        .uniqueResult();
            
        }catch (Exception e) {
            
            JOptionPane.showMessageDialog(null, "Erro ao carregar Model Cliente: "+e.getMessage());
            
        }
        
        return cliente;

    }
    
     public boolean altera_cliente(Cliente cliente){
        
        GenericoDAO dao = new GenericoDAO();
        cliente = (Cliente) dao.getById(Cliente.class, cliente.getId());  

        if(dao.Atualizar(cliente)){
            
            return true;
        }else{
            
            return false;
        }

    }   
    
    
    
    
    
    
    
    
}
